A hypervisor, also called virtual machine (“VM”), allows for the creation of a virtual computer or virtual system. It allows multiple operating systems on each VM to run concurrently on a host computer—a feature called hardware virtualization. Hypervisors present guest operating systems with a virtual platform and monitor the execution of the guest operating systems. In that way, multiple operating systems, including multiple instances of the same operating system, can share hardware resources. Historically, hypervisors provide the ability to consolidate many platforms with VMs. Because of this, several tools were developed to allow conversion between physical hardware resources and virtual hardware resources. But hypervisors experience many difficulties including cost, network issues, disparate interfaces, and performance issues. Furthermore, many applications are not developed with hypervisors in mind. It is difficult to plan which applications to consolidate onto a single hypervisor as application performance requirements vary over time.
Cloud computing is similar to the use of hypervisors, but provides an additional level of abstraction that solves many of the shortcomings of hypervisors. Cloud computing essentially virtualizes across multiple virtual resources. Cloud computing is Internet-based computing where shared computing hardware resources, software, and information are provided to computers and other devices on demand, like an electrical power grid. Cloud computing describes a new consumption and delivery model for IT services involving over-the-Internet provision of resources that provides a layer of abstraction between users and the particular computer hardware being used. Cloud computing infrastructure services deliver computer infrastructure as a service. As such, users no longer need expertise in, or control over, the technology infrastructure that supports them. Rather than purchasing servers, software, data center storage space or network equipment, users can instead purchase those resources as a fully outsourced service on an on-demand basis. Cloud application services, referred to as “Software as a Service” (SaaS), deliver software over the Internet as a service, thus eliminating the need to install and run the application on a user's own systems. The service is typically billed on a utility computing basis based on the amount of resources consumed, where the costs generally reflect the level of activity or usage. Sharing computing resources among multiple organizations or users can improve utilization rates, since servers are not unnecessarily left idle for any extended period of time. This reduces costs significantly and can increase the speed of application development. A side-effect of this approach is that overall computer usage rises dramatically as users no longer have to engineer for peak load limits. In addition, increased high-speed bandwidth makes it possible to receive the same response times from centralized infrastructures at other sites.
Cloud computing frequently takes the form of web-based tools or applications that users can access and use through a web browser as if it were a program installed locally on their own computer. Typical cloud computing service providers deliver common business applications online that are accessed from another web service or software such as a web browser, while the software and data are stored remotely on the servers of the cloud computing service providers or “cloud service providers.” One element of cloud computing is customization and the creation of a user-defined experience. Most cloud computing infrastructures consist of services delivered through common centers and built on servers. Clouds often appear as single points of access for all computing needs. Commercial offerings are generally expected to meet quality of service requirements, and typically include service level agreements. FIG. 1 depicts an example block diagram of a cloud computing environment. In the illustrated embodiment, various local user cloud client computers 102 are interconnected to one another through the exemplary cloud service providers 101 within an example cloud 100. Some major cloud service providers include Microsoft, Salesforce.com, HP, IBM, Amazon, and Google. A cloud client 102 consists of computer hardware or software that relies on cloud computing for application delivery, or that is specifically designed for delivery of cloud services.
A “public cloud” is defined as computing resources that are dynamically provisioned on a self-service basis over the Internet, via web applications or web services, from an off-site third-party cloud service provider who bills its clients on a utility computing basis, much like electricity usage is billed to public utilities customers. A private cloud, on the other hand, is a shared infrastructure that may be established within an enterprise having various departments with similar requirements. Cloud computing requires storage of massive volumes of data called “cloud storage,” which is a model of networked computer data storage for storing data on multiple virtual servers, generally hosted by third parties, rather than being hosted on dedicated servers. The data center operators “virtualize” resources according to the requirements of their customers and expose them as virtual servers, which the customers can themselves manage. Physically, the resource may span across multiple servers or storage systems.
Cloud computing allows for dynamic placement of workload on dedicated or consolidated servers based on user-defined policies. Because of increased workloads, enterprises have to do a lot of capacity planning upfront to account for peak periods of activity, while at other times, resources may go underutilized. Cloud computing provides a way to avoid this problem of requiring such upfront capacity planning by using cloud resources, which essentially pushes the capacity planning to the cloud computing service providers. From a cloud service provider point of view, having multiple enterprises with differing peak capacity requirements allows for greater capacity planning and optimization because usage among disparate customers is generally amortized over time. The average of capacity peaks over many different enterprises in many cases only requires a finite number of resources. A pay-as-you-go solution that offers compute on demand is a good complement to dedicated and consolidated infrastructure (e.g., hypervisor) in the enterprise. Enterprises currently employ any combination of physical hardware and virtual hardware (e.g., hypervisors or VMs) resources to accomplish computing tasks or workloads.